package org.soderiakelvy.controller.login;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.SelectEvent;
import org.soderiakelvy.controller.util.Constante;
import org.soderiakelvy.controller.util.SelectOneMany;
import org.soderiakelvy.model.domain.PackVO;
import org.soderiakelvy.model.domain.RolVO;
import org.soderiakelvy.model.service.LoginServicio;
import org.soderiakelvy.model.service.imp.LoginServicioImpl;


@ManagedBean
@ViewScoped
public class RolList implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private List<RolVO> listaRoles = SelectOneMany.getAllRoles();
	private RolVO rolSeleccionado ;
	private RolVO rolAux;
	private List<RolVO> rolesBuscados;
	private LoginServicio loginServicio = new LoginServicioImpl();
	
	public RolList() {
		System.out.println("Constructor rolList");
	}
	

	public String permisosListener(RolVO r){
		this.setRolSeleccionado(r);
		this.setRolAux(r);
		System.out.println("listener Permisos");
		return null;
	}
	
	public String prepareEdit(RolVO rol){
		FacesContext fc = FacesContext.getCurrentInstance();
		Map<String,Object> sessionParams = fc.getExternalContext().getSessionMap();
		sessionParams.put("rol", rol);

		return null;
	}
	
	public String prepareAgregar(){
		return Constante.URL_ROL_CREATE;
	}
	
	public void modificarPermisos(){
		System.out.println("MODIFICAR");
		LoginServicio ls = new LoginServicioImpl();
		ls.updateRolVO(rolSeleccionado);
		listaRoles = SelectOneMany.getAllRoles();
		
	}
	public void eliminarRol(RolVO rol){
		System.out.println("El ROL ES: "+rol.toString());
		FacesMessage msg = null; 

		if (loginServicio.deleteRolVO(rol).equals("SUCCESS")){
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Se ha Eliminado el Rol: ", rol.getNombre()); 
			listaRoles = SelectOneMany.getAllRoles();
		}else{
			msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Error al Eliminar un Rol, o se encuentra asignado a u personal", "Datos Invalidos"); 
		}
		FacesContext.getCurrentInstance().addMessage(null, msg);  
	}
	//-------------------- GETTERES AND SETTERS--------------------------------------
	public List<RolVO> getListaRoles() {
		return listaRoles;
	}

	public void setListaRoles(List<RolVO> listaRoles) {
		this.listaRoles = listaRoles;
	}

	public RolVO getRolSeleccionado() {
		if (rolSeleccionado == null){
			rolSeleccionado = new RolVO();
		}
		return rolSeleccionado;
	}

	public void setRolSeleccionado(RolVO rolSeleccionado) {
		this.rolSeleccionado = rolSeleccionado;
	}

	public List<RolVO> getRolesBuscados() {
		return rolesBuscados;
	}

	public void setRolesBuscados(List<RolVO> rolesBuscados) {
		this.rolesBuscados = rolesBuscados;
	}

	public RolVO getRolAux() {
		return rolAux;
	}

	public void setRolAux(RolVO rolAux) {
		this.rolAux = rolAux;
	}

}
